package com.esirong.whatime.ui.activity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.TextView;
import android.widget.Toast;

import com.esirong.whatime.Application;
import com.esirong.whatime.R;
import com.esirong.whatime.util.Logger;
import com.esirong.whatime.util.NetWorkUtil;
import com.esirong.whatime.util.SystemUiHider;
import com.esirong.whatime.util.VersionUtil;
import com.litesuits.android.log.Log;


/**
 * 启动加载页
 * An example full-screen activity that shows and hides the system UI (i.e.
 * status bar and navigation/system bar) with user interaction.
 *
 * @see SystemUiHider
 */
public class SplashActivity extends Activity {
    private static final String TAG = "SplashActivity";
    /**
     * 启动页面的显示时长2s
     */
    private final int SPLASH_DELAY_MILLIS = 2000; //
    private long mStartTime;// 开始时间

    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case Application.INIT_SUCCESS:// 如果加载完毕，就发送此消息
                    long loadingTime = System.currentTimeMillis() - mStartTime;// 计算一下总共花费的时间
                    if (loadingTime < SPLASH_DELAY_MILLIS) {// 如果比最小显示时间还短，就延时进入MainActivity，否则直接进入
                        mHandler.postDelayed(goToMainActivity, SPLASH_DELAY_MILLIS
                                - loadingTime);
                    } else {
                        mHandler.post(goToMainActivity);
                    }
                    break;
                default:
                    break;
            }
            super.handleMessage(msg);
        }
    };
    /**
     * (1). 应用名称
     (2). 应用版本
     (3). 应用图标
     (4). 版权
     (5). 一句话描述
     (6). 进度条
     (7). 额外信息,如市场专版,独家首发等
     ... ...
     3. 优点
     启动界面综合考虑,至少有这些优点可以利用:
     (1). 友好的等待界面，这是最基本的
     (2). 应用的基本说明，宣传介绍
     (3). 动态的广告，全屏广告
     (4). 应用的属性说明如版本，版权等信息，知晓用户当前应用的基本属性
     从技术的角度细看，还有如下：
     (5). 加载耗时资源
     (6). 检查新版本
     (7). 预设条件
     (8). 代码分离
     */
    //进入下一个Activity
    Runnable goToMainActivity = new Runnable() {

        @Override
        public void run() {
            Intent intent = new Intent(SplashActivity.this, MainActivity.class);
            SplashActivity.this.startActivity(intent);
            SplashActivity.this.finish();
            overridePendingTransition(R.anim.anim_zoom_in, R.anim.anim_zoom_out);
            finish();
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_splash);
        mStartTime = System.currentTimeMillis();//记录开始时间，
        Application.getInstance().initData(mHandler);//开始加载数据
        TextView mVersionNameText = (TextView) findViewById(R.id.version_name);
        mVersionNameText.setText(VersionUtil.getCurrentVersionName(this));
        Animation animation = AnimationUtils.loadAnimation(this, R.anim.anim_transparent_loop);
        findViewById(R.id.app_icon).startAnimation(animation);
        initApp();
    }


    private void initApp() {
        checkNetWork();
        initDatas();
        checkVer();

    }

    /**
     * 检查网络状态
     */
    private void checkNetWork(){
        Logger.d(TAG,"检查网络状态");
        if(NetWorkUtil.isNetworkConnected(this)){
            Toast.makeText(this, "网络可用", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "网络不可用", Toast.LENGTH_SHORT).show();
        }
    }

    /**
     * 初始化数据
     */
    private void initDatas(){
        Logger.d(TAG,"初始化数据");
    }

    /**
     * 检查版本
     */
    private void checkVer(){
        Log.d(this, "检查版本");


        if(!NetWorkUtil.isNetworkConnected(getApplicationContext())){
            return;
        }
        VersionUtil.checkForUpdate();

    }
}
